package proyecto.web;

import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

import proyecto.exception.DAOExcepcion;
import proyecto.modelo.Categoria;
import proyecto.service.CategoriaService;

public class CategoriaController extends MultiActionController {

    private CategoriaService categoriaService;

    public CategoriaService getCategoriaService() {
        return categoriaService;
    }

    public void setCategoriaService(CategoriaService categoriaService) {
        this.categoriaService = categoriaService;
    }

    public ModelAndView index(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/categorias/categorias_listado");
    }

    public ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) {
        String nombres = request.getParameter("nombre");
        try {
            Collection<Categoria> categorias = categoriaService.buscarPorNombre(nombres);
            System.out.println(categorias);
            request.setAttribute("categorias", categorias);
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
        }
        return new ModelAndView("/admin/categorias_mantener");
    }

    public ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response) {
        return new ModelAndView("/admin/categorias_nuevo");
    }

    public ModelAndView insertar(HttpServletRequest request, HttpServletResponse response) {
        Categoria vo = new Categoria();
        vo.setVc_descripCategoria((request.getParameter("descripcion")));
        vo.setDo_descTicketXCategoria(Double.parseDouble(request.getParameter("descTicketXCat")));
        vo.setDo_descProducto(Double.parseDouble(request.getParameter("descProd")));
        try {
            categoriaService.insertar(vo);
        }  
        catch (DAOExcepcion e) {
            System.err.println(e.toString());
        }
        return new ModelAndView("redirect:/categoria_listado.htm");
    }

    /*
    public ModelAndView eliminar(HttpServletRequest request, HttpServletResponse response) {
    	String idCategoria = request.getParameter("idCategoria");
        PrintWriter out = null;
        
        try {
        	out = response.getWriter();
        	
            categoriaService.eliminar(Integer.parseInt(idCategoria));
            
            out.println("1");
        } catch (DAOExcepcion ex) {
            System.err.println(ex.toString());
            out.println("0");
        } catch (Exception e) {
        	 System.err.println(e.toString());
        	 out.println("0");        	 
		} finally {
			out.close();
		}
        return null;
    }*/

    
    /*
    public ModelAndView obtener(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("idCategoria"));
        Categoria vo;
        try {
            vo = categoriaService.obtener(id);
            request.setAttribute("Categoria", vo);
        } catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("/admin/categorias_editar");
    }*/

    public ModelAndView actualizar(HttpServletRequest request, HttpServletResponse response) {
        int id = Integer.parseInt(request.getParameter("idCategoria"));
        Categoria vo = new Categoria();
        vo.setIn_codCategoria(id);
        vo.setVc_descripCategoria((request.getParameter("descripcion")));
        vo.setDo_descTicketXCategoria(Double.parseDouble(request.getParameter("descTicketXCat")));
        vo.setDo_descProducto(Double.parseDouble(request.getParameter("descProd")));
        try {
          categoriaService.actualizar(vo);
        } 
        catch (DAOExcepcion e) {
            System.err.println("Error");
        }
        return new ModelAndView("redirect:/categoria_listado.htm");
    }
}
